function IOTimeoutListener(listener) {
	var id, me = this, onceval = true;
	var t = 1000 * TITTValues.NUDER_IO_TIMEOUT;
	
	this.onInitiate = function(total) {
		listener.onInitiate(total);
	}
	
	this.onConnectionUpdate = function(read, total) {
		clearTimeout(id);
		listener.onConnectionUpdate(read, total);
		id = setTimeout(me.onError, t);
	}
	
	this.onError = function() {
		if(once())
			listener.onError();
	}
	
	this.onComplete = function(total) {
		if(once())
			listener.onComplete(total);
	}
	
	function once() {
		clearTimeout(id);
		return onceval && !(onceval = false);
	}
}
